package cn.cailin.day07.demo02Recursion;

import java.util.Date;

/*
    递归：方法自己调用自己
    -递归的分类：
        递归分为俩种，直接递归，间接递归
     注意事项：
        递归一定要有条件限定，保证递归能够停下来否则会发生栈内存溢出
        在递归中虽然有限定条件，但是递归次数不能太多。否则也会发生栈内存溢出
        构造方法，禁止递归
     递归的使用前提：
        当调用方法的时候，方法的主体不变，每次调用方法的参数不同，可以使用递归
 */
public class Demo01Recursion {
    public static void main(String[] args) {
        /*a();*/
        b(1);
    }

    /*
        构造方法禁止递归
        编译报错：构造方法是创建对象使用的一直递归会导致内存中无数多个对象，直接编译报错
     */
    public Demo01Recursion(){
       // Demo01Recursion();//编译报错
    }

    private static void b(int i) {
        System.out.println(i);
        if (i==1000000){
            return;//结束方法
        }
        b(++i);

    }

    private static void a() {
        System.out.println("a方法！");
        a();
    }
}
